/**
 * HTML代码管理模块模拟数据测试文件
 * 用于测试模拟数据功能是否正常工作
 */

import { htmlCodeService } from './services/html-code-service.js';
import { API_CONFIG } from './config.js';

/**
 * 测试模拟数据功能
 */
async function testMockData() {
  console.log('🧪 开始测试HTML代码管理模块模拟数据功能...');
  
  // 检查配置
  console.log('📋 当前配置:');
  console.log('  - 全局使用模拟数据:', API_CONFIG.USE_MOCK_DATA);
  console.log('  - HTML代码模块使用模拟数据:', API_CONFIG.HTML_CODE_MANAGEMENT.USE_MOCK_DATA);
  console.log('  - 模拟延迟时间:', API_CONFIG.HTML_CODE_MANAGEMENT.MOCK_DELAY + 'ms');
  
  try {
    // 测试获取HTML代码列表
    console.log('\n📝 测试获取HTML代码列表...');
    const startTime = Date.now();
    const listResult = await htmlCodeService.getHtmlCodes({
      page: 1,
      pageSize: 5,
      search: '页面'
    });
    const endTime = Date.now();
    
    console.log('✅ 列表获取成功:');
    console.log('  - 请求耗时:', (endTime - startTime) + 'ms');
    console.log('  - 数据条数:', listResult.data?.length || 0);
    console.log('  - 分页信息:', listResult.pagination);
    
    if (listResult.data && listResult.data.length > 0) {
      const firstItem = listResult.data[0];
      console.log('  - 第一条数据:', {
        id: firstItem.id,
        name: firstItem.name,
        workspace_id: firstItem.workspace_id,
        app_id: firstItem.app_id
      });
      
      // 测试获取详情
      console.log('\n🔍 测试获取HTML代码详情...');
      const detailResult = await htmlCodeService.getHtmlCode(firstItem.id);
      console.log('✅ 详情获取成功:');
      console.log('  - ID:', detailResult.id);
      console.log('  - 名称:', detailResult.name);
      console.log('  - HTML代码长度:', detailResult.page?.length || 0);
      
      // 测试创建HTML代码
      console.log('\n➕ 测试创建HTML代码...');
      const newHtmlCode = {
        name: '测试页面',
        page: '<html><body><h1>测试页面</h1></body></html>',
        workspace_id: 'test_workspace',
        app_id: 'test_app',
        content: '这是一个测试页面'
      };
      
      const createResult = await htmlCodeService.createHtmlCode(newHtmlCode);
      console.log('✅ 创建成功:');
      console.log('  - 新ID:', createResult.id);
      console.log('  - 名称:', createResult.name);
      
      // 测试更新HTML代码
      console.log('\n✏️ 测试更新HTML代码...');
      const updateData = {
        name: '更新后的测试页面',
        content: '这是更新后的内容'
      };
      
      const updateResult = await htmlCodeService.updateHtmlCode(createResult.id, updateData);
      console.log('✅ 更新成功:');
      console.log('  - 更新后名称:', updateResult.name);
      console.log('  - 更新后内容:', updateResult.content);
      
      // 测试更新HTML内容
      console.log('\n📝 测试更新HTML内容...');
      const newHtmlContent = '<html><body><h1>更新后的HTML内容</h1><p>这是新的内容</p></body></html>';
      const updateContentResult = await htmlCodeService.updateHtmlContent(createResult.id, newHtmlContent);
      console.log('✅ HTML内容更新成功:');
      console.log('  - 新HTML长度:', updateContentResult.page?.length || 0);
      
      // 测试验证HTML代码
      console.log('\n🔍 测试验证HTML代码...');
      const validateResult = await htmlCodeService.validateHtmlCode(newHtmlContent);
      console.log('✅ 验证完成:');
      console.log('  - 是否有效:', validateResult.valid);
      console.log('  - 错误信息:', validateResult.errors || '无');
      
      // 测试预览HTML代码
      console.log('\n👁️ 测试预览HTML代码...');
      const previewResult = await htmlCodeService.previewHtmlCode(createResult.id);
      console.log('✅ 预览成功:');
      console.log('  - 预览内容长度:', previewResult.length);
      
      // 测试获取统计信息
      console.log('\n📊 测试获取统计信息...');
      const statsResult = await htmlCodeService.getHtmlCodeStats();
      console.log('✅ 统计信息获取成功:');
      console.log('  - 总数:', statsResult.total);
      console.log('  - 活跃数:', statsResult.active);
      console.log('  - 非活跃数:', statsResult.inactive);
      console.log('  - 草稿数:', statsResult.draft);
      
      // 测试删除HTML代码
      console.log('\n🗑️ 测试删除HTML代码...');
      const deleteResult = await htmlCodeService.deleteHtmlCode(createResult.id);
      console.log('✅ 删除成功:');
      console.log('  - 删除结果:', deleteResult.message);
    }
    
    console.log('\n🎉 所有测试完成！模拟数据功能正常工作。');
    
  } catch (error) {
    console.error('❌ 测试失败:', error.message);
    console.error('错误详情:', error);
  }
}

/**
 * 测试搜索和筛选功能
 */
async function testSearchAndFilter() {
  console.log('\n🔍 测试搜索和筛选功能...');
  
  try {
    // 测试搜索
    console.log('📝 测试搜索功能...');
    const searchResult = await htmlCodeService.getHtmlCodes({
      search: '页面',
      page: 1,
      pageSize: 3
    });
    console.log('✅ 搜索成功，找到', searchResult.data?.length || 0, '条结果');
    
    // 测试工作空间筛选
    console.log('🏢 测试工作空间筛选...');
    const workspaceResult = await htmlCodeService.getHtmlCodes({
      workspaceId: 'workspace1',
      page: 1,
      pageSize: 3
    });
    console.log('✅ 工作空间筛选成功，找到', workspaceResult.data?.length || 0, '条结果');
    
    // 测试应用筛选
    console.log('📱 测试应用筛选...');
    const appResult = await htmlCodeService.getHtmlCodes({
      appId: 'app1',
      page: 1,
      pageSize: 3
    });
    console.log('✅ 应用筛选成功，找到', appResult.data?.length || 0, '条结果');
    
    // 测试组合筛选
    console.log('🔗 测试组合筛选...');
    const combinedResult = await htmlCodeService.getHtmlCodes({
      search: 'HTML',
      workspaceId: 'workspace1',
      appId: 'app1',
      page: 1,
      pageSize: 3
    });
    console.log('✅ 组合筛选成功，找到', combinedResult.data?.length || 0, '条结果');
    
  } catch (error) {
    console.error('❌ 搜索和筛选测试失败:', error.message);
  }
}

// 如果直接运行此文件，执行测试
if (typeof import.meta !== 'undefined' && import.meta.url === `file://${process.argv[1]}`) {
  testMockData().then(() => {
    return testSearchAndFilter();
  }).then(() => {
    console.log('\n🏁 所有测试完成！');
  }).catch(error => {
    console.error('测试过程中发生错误:', error);
  });
}

export { testMockData, testSearchAndFilter };
